{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###第三周作业\n",
    "在 Rental Listing Inquiries 数据上练习 xgboost 参数调优\n",
    "数据说明：\n",
    "Rental Listing Inquiries 数据集是 Kaggle 平台上的一个分类竞赛任务，需要根据\n",
    "公寓的特征来预测其受欢迎程度（用户感兴趣程度分为高、中、低三类）。其\n",
    "中房屋的特征 x 共有 14 维，响应值 y 为用户对该公寓的感兴趣程度。评价标准\n",
    "为 logloss。\n",
    "数据链接：https://www.kaggle.com/c/two-sigma-connect-rental-listing-inquiries\n",
    "为减轻大家对特征工程的入手难度，以及统一标准，数据请用课程网站提供的\n",
    "特征工程编码后的数据（RentListingInquries_FE_train.csv）或稀疏编码的形式\n",
    "（RentListingInquries_FE_train.bin）。xgboost 既可以单独调用，也可以在\n",
    "sklearn 框架下调用。大家可以随意选择。若采用 xgboost 单独调用使用方式，\n",
    "建议读取稀疏格式文件。\n",
    "关于特征工程的过程，可参看文件：FE_RentListingInqueries.ipynb\n",
    "作业要求：\n",
    "采用 xgboost 模型完成商品分类（需进行参数调优）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier # scikit-learn嵌入的\n",
    "import xgboost as xgb             #用xgboost，交叉验证做迭代次数\n",
    "\n",
    "import numpy  as np #线性代数等\n",
    "import pandas as pd #读取文件等\n",
    "import scipy  as sp #处理10^10级别的数等\n",
    "import seaborn           as sns       #画图      \n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from matplotlib import pyplot\n",
    "from sklearn.model_selection import GridSearchCV  #网格搜索加交叉验证\n",
    "from sklearn.model_selection import StratifiedKFold #缺省的交叉验证用\n",
    "\n",
    "from sklearn.metrics import log_loss #评价指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读取数据\n",
    "trainRental = pd.read_csv(\"RentListingInquries_FE_train.csv\")\n",
    "testRental  = pd.read_csv(\"RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#trainRental.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#trainRental.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#testRental.head()#观察之后发现trainRental和testRental差异在于　一维　响应值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#testRental.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#sns.countplot(trainRental.interest_level)#查看响应值分布，两两之间都相差不到10倍，还可以"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "#划分输入特征和响应\n",
    "X_train = trainRental.drop(\"interest_level\",axis = 1)\n",
    "y_train = trainRental[\"interest_level\"]\n",
    "#y_train.head()\n",
    "cols = X_train.columns\n",
    "#print(cols)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#已经是特征编码后的数据\n",
    "#StratifiedKFold 分层采样交叉切分，确保训练集，测试集中各类别样本的比例与原始数据集中相同。\n",
    "RentalKFold = StratifiedKFold(n_splits = 4,shuffle = True,random_state = 3)\n",
    "#待观察模型是过拟合还是欠拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8], 'colsample_bytree': [0.6, 0.7, 0.8, 0.9]}\n"
     ]
    }
   ],
   "source": [
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test5 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "print(param_test5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "xgb5 = XGBClassifier(                               #三步曲第一步\n",
    "                        learning_rate = 0.1,\n",
    "                        n_estimators = 383,    #首次变更项\n",
    "                        max_depth = 5,      \n",
    "                        min_child_weight = 5,   #同一考虑\n",
    "                        gamma = 0,\n",
    "                        subsample = 0.3,\n",
    "                        colsample_bytree = 0.8,\n",
    "                        colsample_bylevel = 0.7,#行列采样\n",
    "                        objective = \"multi:softprob\",                                       #因为是多类分问题\n",
    "                        seed = 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "#GSearch_2 = GridSearchCV(xgbSecond,param_grid = param_test_2，scoring = \"neg_log_loss\",n_jobs = -1,cv = RentalKFold )\n",
    "GSearch_5 = GridSearchCV(xgb5, param_grid = param_test5, scoring='neg_log_loss',n_jobs= -1, cv=RentalKFold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=StratifiedKFold(n_splits=4, random_state=3, shuffle=True),\n",
       "       error_score='raise',\n",
       "       estimator=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
       "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
       "       max_depth=5, min_child_weight=5, missing=None, n_estimators=383,\n",
       "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
       "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
       "       subsample=0.3),\n",
       "       fit_params=None, iid=True, n_jobs=-1,\n",
       "       param_grid={'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8], 'colsample_bytree': [0.6, 0.7, 0.8, 0.9]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "GSearch_5.fit(X_train , y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58953, std: 0.00563, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.58672, std: 0.00435, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.58508, std: 0.00501, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.58342, std: 0.00443, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.58339, std: 0.00497, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.58298, std: 0.00523, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.59024, std: 0.00522, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.58635, std: 0.00475, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.58492, std: 0.00375, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.58414, std: 0.00443, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.58308, std: 0.00440, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.58259, std: 0.00446, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.58907, std: 0.00497, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.58730, std: 0.00461, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.58535, std: 0.00409, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.58453, std: 0.00414, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.58384, std: 0.00485, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.58281, std: 0.00436, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.58971, std: 0.00396, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.58772, std: 0.00456, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.58592, std: 0.00395, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.58467, std: 0.00414, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.58364, std: 0.00399, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.58266, std: 0.00431, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       " -0.5825862977937641)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "GSearch_5.grid_scores_, GSearch_5.best_params_,     GSearch_5.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([245.79596156, 287.46794862, 275.35480118, 279.43626773,\n",
       "        252.62711304, 249.57687724, 244.45337862, 279.4177233 ,\n",
       "        324.33547682, 313.63022   , 304.37319314, 282.89330751,\n",
       "        269.4984737 , 315.13678426, 393.3962999 , 335.68751484,\n",
       "        336.51117617, 357.02545989, 332.71208012, 362.48828316,\n",
       "        389.82589173, 385.37281638, 351.57734692, 339.03659481]),\n",
       " 'mean_score_time': array([3.69169039, 3.30528909, 2.98167861, 2.4983936 , 2.49688935,\n",
       "        2.4897458 , 2.48911881, 2.40314072, 1.95920992, 2.0193696 ,\n",
       "        2.22617006, 2.09030861, 1.93326539, 1.76945531, 2.15285003,\n",
       "        1.96372217, 3.12995505, 2.37732202, 1.897295  , 2.0158608 ,\n",
       "        1.83299959, 2.60016447, 1.88150334, 1.7254138 ]),\n",
       " 'mean_test_score': array([-0.58953131, -0.58671618, -0.58508314, -0.58342193, -0.58339101,\n",
       "        -0.58298265, -0.59023922, -0.58634819, -0.58492151, -0.58414007,\n",
       "        -0.58307898, -0.5825863 , -0.58906537, -0.58729506, -0.5853458 ,\n",
       "        -0.58453067, -0.58383647, -0.58280566, -0.58971288, -0.58772214,\n",
       "        -0.58591575, -0.58467225, -0.58363781, -0.58265817]),\n",
       " 'mean_train_score': array([-0.48502554, -0.47919962, -0.47567193, -0.47405396, -0.47351679,\n",
       "        -0.47447559, -0.4806865 , -0.47501488, -0.47154796, -0.47108099,\n",
       "        -0.47035234, -0.47129957, -0.47752031, -0.4728868 , -0.46930766,\n",
       "        -0.46764488, -0.46816353, -0.46957353, -0.4747535 , -0.46952074,\n",
       "        -0.46623669, -0.46501755, -0.46486105, -0.46612942]),\n",
       " 'param_colsample_bytree': masked_array(data=[0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.7, 0.7, 0.7, 0.7, 0.7,\n",
       "                    0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.9, 0.9, 0.9,\n",
       "                    0.9, 0.9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_subsample': masked_array(data=[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6, 0.7,\n",
       "                    0.8, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6,\n",
       "                    0.7, 0.8],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " 'rank_test_score': array([22, 18, 14,  7,  6,  4, 24, 17, 13, 10,  5,  1, 21, 19, 15, 11,  9,\n",
       "         3, 23, 20, 16, 12,  8,  2]),\n",
       " 'split0_test_score': array([-0.58060928, -0.58014353, -0.57771095, -0.57649269, -0.57582277,\n",
       "        -0.57519774, -0.58266374, -0.57927971, -0.57972069, -0.57782613,\n",
       "        -0.57660354, -0.57562086, -0.58084282, -0.58056217, -0.57901424,\n",
       "        -0.57856484, -0.57687363, -0.57653012, -0.58546693, -0.58127273,\n",
       "        -0.58007018, -0.57794458, -0.57724151, -0.57634447]),\n",
       " 'split0_train_score': array([-0.48703682, -0.4808351 , -0.47706874, -0.47560487, -0.47559305,\n",
       "        -0.47604205, -0.48419638, -0.47614666, -0.47276835, -0.47281444,\n",
       "        -0.47372816, -0.47424851, -0.48028504, -0.47488066, -0.47151271,\n",
       "        -0.4694435 , -0.46992772, -0.47197344, -0.47659077, -0.47184525,\n",
       "        -0.46895068, -0.46784745, -0.46708416, -0.46855011]),\n",
       " 'split1_test_score': array([-0.590666  , -0.5869463 , -0.58637372, -0.58402283, -0.5857157 ,\n",
       "        -0.58340942, -0.59157308, -0.58757676, -0.58561002, -0.58421457,\n",
       "        -0.58428732, -0.5836628 , -0.59109635, -0.58852285, -0.58729612,\n",
       "        -0.5852313 , -0.58324632, -0.58282507, -0.59051879, -0.5902555 ,\n",
       "        -0.58821982, -0.58625378, -0.58406521, -0.58477131]),\n",
       " 'split1_train_score': array([-0.48253051, -0.47794163, -0.47412776, -0.47257206, -0.47125257,\n",
       "        -0.4724047 , -0.4792826 , -0.4747114 , -0.47187894, -0.47110028,\n",
       "        -0.4696137 , -0.46934586, -0.47661754, -0.47210048, -0.4683534 ,\n",
       "        -0.46580413, -0.46614033, -0.46819668, -0.4740259 , -0.46924572,\n",
       "        -0.46589418, -0.46338949, -0.46379363, -0.46512885]),\n",
       " 'split2_test_score': array([-0.59063041, -0.58741878, -0.58453335, -0.58432089, -0.58267262,\n",
       "        -0.58336965, -0.5894568 , -0.58596076, -0.58414438, -0.5841726 ,\n",
       "        -0.58252651, -0.58302397, -0.59015817, -0.58664323, -0.58493626,\n",
       "        -0.584109  , -0.58472821, -0.58299913, -0.58705867, -0.58598472,\n",
       "        -0.58481267, -0.58530871, -0.58507973, -0.5815115 ]),\n",
       " 'split2_train_score': array([-0.48508573, -0.47798982, -0.4759595 , -0.47561518, -0.47359216,\n",
       "        -0.47375178, -0.48041289, -0.47589592, -0.47190271, -0.4705696 ,\n",
       "        -0.46971764, -0.47159646, -0.47666763, -0.4717566 , -0.46857346,\n",
       "        -0.46700073, -0.46923979, -0.46934967, -0.47397481, -0.46869062,\n",
       "        -0.46594952, -0.46419612, -0.46517215, -0.46612463]),\n",
       " 'split3_test_score': array([-0.59622082, -0.59235709, -0.59171566, -0.58885229, -0.58935404,\n",
       "        -0.58995501, -0.59726444, -0.5925766 , -0.59021179, -0.59034799,\n",
       "        -0.58889954, -0.58803857, -0.59416523, -0.59345302, -0.59013746,\n",
       "        -0.59021849, -0.59049883, -0.58886934, -0.59580794, -0.59337657,\n",
       "        -0.59056118, -0.58918285, -0.5881657 , -0.58800635]),\n",
       " 'split3_train_score': array([-0.48544908, -0.48003194, -0.47553171, -0.47242373, -0.47362938,\n",
       "        -0.47570384, -0.47885415, -0.47330555, -0.46964182, -0.46983965,\n",
       "        -0.46834989, -0.47000746, -0.47651104, -0.47280945, -0.46879107,\n",
       "        -0.46833116, -0.46734629, -0.46877432, -0.47442254, -0.46830135,\n",
       "        -0.46415236, -0.46463713, -0.46339427, -0.4647141 ]),\n",
       " 'std_fit_time': array([0.17616098, 0.60068373, 1.47402924, 0.38628542, 0.51420558,\n",
       "        0.72913533, 2.0360339 , 0.44784687, 0.48244195, 1.71013611,\n",
       "        2.11876402, 0.77990198, 0.8651989 , 0.43881732, 2.34638064,\n",
       "        4.59144239, 1.87554768, 0.58759017, 5.42432923, 0.99458335,\n",
       "        2.09551969, 0.83453857, 1.86242039, 4.57305931]),\n",
       " 'std_score_time': array([0.92474701, 1.00314647, 1.03419671, 0.69231716, 0.91252259,\n",
       "        0.86948218, 0.81611749, 0.75189853, 0.33692282, 0.20272625,\n",
       "        0.62591739, 0.30070437, 0.3233041 , 0.27957692, 0.35746554,\n",
       "        0.31645199, 0.84035971, 0.4344616 , 0.34490241, 0.36105082,\n",
       "        0.28887443, 1.04704517, 0.36708274, 0.20773906]),\n",
       " 'std_test_score': array([0.0056314 , 0.00434647, 0.0050077 , 0.00443492, 0.00496885,\n",
       "        0.00523334, 0.00522335, 0.00475439, 0.00374545, 0.00442749,\n",
       "        0.00440387, 0.00446084, 0.00497346, 0.00461479, 0.00409333,\n",
       "        0.0041416 , 0.00484799, 0.00436431, 0.00396455, 0.00455535,\n",
       "        0.0039458 , 0.0041387 , 0.00398992, 0.00430833]),\n",
       " 'std_train_score': array([0.00161659, 0.00126627, 0.00105332, 0.00155695, 0.00153752,\n",
       "        0.00148112, 0.00210491, 0.00112595, 0.00115738, 0.00109632,\n",
       "        0.00202203, 0.00188884, 0.00159722, 0.00121214, 0.00128246,\n",
       "        0.00137016, 0.00150266, 0.00144431, 0.00107481, 0.00138338,\n",
       "        0.00172554, 0.00169399, 0.00144307, 0.00148863])}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "GSearch_5.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.582586 using {'colsample_bytree': 0.7, 'subsample': 0.8}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\Dell\\Documents\\anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1cd53224390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"Best: %f using %s\" % (GSearch_5.best_score_, GSearch_5.best_params_))\n",
    "test_means = GSearch_5.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = GSearch_5.cv_results_[ 'std_test_score' ]\n",
    "train_means = GSearch_5.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = GSearch_5.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(GSearch_5.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_5.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))   \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree_5.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
